﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MJM.RPP.EntidadesNegocio;
using MJM.Principal;
using MJM.SPP.EntidadesNegocio;
using MJM.SCA.EntidadesNegocio;
using MJM.SPP.ComponentesNegocio;

namespace wRegPadron
{
    public partial class Inicio : System.Web.UI.Page
    {
        public PersonaE objPersonaEN;
        public int IdGrupo;
        public String Usuario;
        public AudiService.wsAud_Acc servicio = new AudiService.wsAud_Acc();

        private void CargaSeleccionMain()
        {
            string fecha = "";
            string mes, dia;
            if (DateTime.Now.Month < 10)
                mes = "0" + DateTime.Now.Month.ToString();
            else
                mes = DateTime.Now.Month.ToString();
            if (DateTime.Now.Day < 10)
                dia = "0" + DateTime.Now.Day.ToString();
            else
                dia = DateTime.Now.Day.ToString();
            fecha = DateTime.Now.Year.ToString() + mes + dia + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
            int value = Convert.ToInt32(tvMainMenu.SelectedValue);
            switch ((value % 10))
            {
                case 1:
                    { }; break;
                case 2:
                    {
                        value = value / 10;
                        if (value != 0)
                        {
                            int idres = MediadorCN.GetRestriccionMod().IdResExterno(value);
                            if (MediadorCN.GetRestriccionGrupo().Acceso(idres, IdGrupo, ObtieneIP()))
                            {
                                string parametros = "";
                                SubOpcionEN obj = MediadorCN.GetSubOpcion().Obtener(value);
                                List<ParametroCuentEN> lst = new List<ParametroCuentEN>();
                                RemotePost objRemotePost = new RemotePost();
                                objRemotePost.Url = obj.SUBOPT_chNOMASP;

                                Session.Add("pagina", obj.SUBOPT_chDIRURL + parametros);
                                if (obj.Tipo == 'I')
                                {
                                    parametros = "?Pass=" + Session["Pass"].ToString() + "&User=" + Session["Usuario"].ToString() + "&fec=" + fecha + "&Time=20" + "&idCtrl=" + value.ToString() + "&Muni=" + Session["muni"] + "&UsuLog=" + Session["UsuLog"].ToString();
                                    //Session.Add("pagina", obj.SUBOPT_chDIRURL + parametros);
                                    AbreOpcion("frmMediador.aspx" + parametros);
                                }
                                else
                                {
                                    if (obj.EnvParametro == 1)
                                    {
                                        lst = MediadorCN.GetParametroCuent().Listar(value);
                                        if (lst.Count > 0)
                                        {
                                            if (lst[0].PARURL_P_inID == 1)
                                            {
                                                parametros = "?" + lst[0].NombreParam + "=" + Session["Usuario"].ToString();
                                                objRemotePost.Add(lst[0].NombreParam, Session["Usuario"].ToString());
                                            }
                                            if (lst.Count > 1)
                                            {
                                                if (lst[1].PARURL_P_inID == 2)
                                                {
                                                    parametros = parametros + "&" + lst[1].NombreParam + "=" + Session["Pass"].ToString();
                                                    objRemotePost.Add(lst[1].NombreParam, Session["Pass"].ToString());
                                                }
                                            }
                                            fecha = DateTime.Now.Year.ToString() + mes + dia + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
                                            parametros = parametros + "&fec=" + fecha + "&Time=20" + "&idCtrl=" + value.ToString() + "&Muni=" + Session["muni"];
                                            //parametros = 
                                            objRemotePost.Add("fec", fecha);
                                        }
                                    }
                                    Session.Add("pagina", obj.SUBOPT_chDIRURL + parametros);
                                    AbreVentanaForm("frmNuevaVentana.aspx");
                                }
                                InsertarLog(tvMainMenu.SelectedNode.Text, "Ingresar", "", 1, "");
                            }
                        }
                    }; break;
                case 3:
                    {
                        //tvMainMenu.SelectedNode.Parent.;
                        value = value / 10;
                        SubOpcionEN objSubOpcionEN = new SubOpcionEN();
                        objSubOpcionEN = MediadorCN.GetSubOpcion().Obtener(value);
                        string parametros = "";
                        //parametros = "?Pass=" + Session["Pass"].ToString() + "&User=" + Session["Usuario"].ToString() + "&fec=" + fecha + "&Time=20" + "&idCtrl=" + value.ToString() + "&Muni=" + Session["muni"] + "&UsuLog=" + Session["UsuLog"].ToString();
                        parametros = "&idCtrl=" + value.ToString();
                        Session.Add("pagina", objSubOpcionEN.SUBOPT_chDIRURL + parametros);
                        AbreVentanaForm("frmNuevaVentana.aspx");
                        InsertarLog(tvMainMenu.SelectedNode.Text, "Ingresar", "", 1, "");
                    }; break;
            }

            //Response.Redirect("Inicio.aspx#Final");
        }

        private void InsertarLog(String prm2, String prm3, string parametros, int resultado, string excepcion)
        {
            LogTramiteEN objLogTramiteEN = new LogTramiteEN();
            string mes, dia;
            if (DateTime.Now.Month < 10)
                mes = "0" + DateTime.Now.Month.ToString();
            else mes = DateTime.Now.Month.ToString();

            if (DateTime.Now.Day < 10)
                dia = "0" + DateTime.Now.Day.ToString();
            else dia = DateTime.Now.Day.ToString();
            objLogTramiteEN.LOGAW_chFECMOD = DateTime.Now.Year.ToString() + mes + dia;
            objLogTramiteEN.LOGAW_chFECREG = DateTime.Now.ToShortDateString();
            objLogTramiteEN.LOGAW_chHORREG = DateTime.Now.ToShortTimeString();
            objLogTramiteEN.LOGAW_chIPCLIEN = ObtieneIP();
            objLogTramiteEN.LOGAW_chPARDOS = prm2;
            objLogTramiteEN.LOGAW_chPARUNO = Session["Usuario"].ToString();
            objLogTramiteEN.LOGAW_chPARTRE = prm3;
            objLogTramiteEN.LOGAW_inHORMOD = DateTime.Now.Hour;
            objLogTramiteEN.LOGAW_chNOMAPL = "Padrón";
            servicio.Inser_Acc(Session["Usuario"].ToString(), "Gestión", prm2, prm3, parametros, resultado, excepcion, ObtieneIP());
            //servicio.Inser_Acc(Session["Usuario"].ToString(), "Gestión", prm2, prm3, parametros, resultado, excepcion, "");
            //MediadorCN.GetLogTramite().Insertar(objLogTramiteEN);
        }

        private String ObtieneIP()
        {
            string ipusuario = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            if (ipusuario == null)
                ipusuario = "";
            return ipusuario;
        }

        private void CierraVentana()
        {
            Response.Redirect("Login.aspx");
        }

        private void AbreVentanaForm(string ventana)
        {
            string Clientscript = "<script>open('" + ventana + "')</script>";
            if (!Page.ClientScript.IsStartupScriptRegistered("WOpen"))
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "WOpen", Clientscript);
            }
        }

        private void AbreOpcion(string ventana)
        {
            string Clientscript = "<script>open('" + ventana + "','" + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + "','top=0,left=0,width=1024,height=650,status=no,resizable=no,scrollbars=yes')</script>";
            if (!Page.ClientScript.IsStartupScriptRegistered("WOpen"))
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "WOpen", Clientscript);
            }
        }

        private String ObtieneFecha()
        {
            String Fecha = DateTime.Now.ToLongDateString();
            //String Fecha = DateTime.Now.ToShortDateString();  
            return Fecha + " " + DateTime.Now.ToLocalTime().ToShortTimeString();
        }

        private void CargarTreeView()
        {
            List<ModuloEN> lst = MediadorCN.GetModulo().Listar(1);
            for (int i = 0; i < lst.Count; i++)
            {
                TreeNode n = new TreeNode();
                n.Text = lst[i].OPTGEN_chNOMMEN;
                n.Value = lst[i].OPTGEN_P_inID.ToString() + "1";
                tvMainMenu.Nodes.Add(n);
                List<SubOpcionEN> lstSub = MediadorCN.GetSubOpcion().Listar(lst[i].OPTGEN_P_inID);
                for (int j = 0; j < lstSub.Count; j++)
                {
                    TreeNode ni = new TreeNode();
                    /*  if(lst[i].OPTGEN_chNOMMEN.ToUpper()=="EXTERNO")
                          ni.Target = lstSub[j].SUBOPT_chNOMASP;*/
                    ni.Text = lstSub[j].SUBOPT_chNOMSOP;
                    ni.Value = lstSub[j].SUBOPT_P_inID.ToString() + "0";
                    tvMainMenu.Nodes[i].ChildNodes.Add(ni);
                }
            }

            tvMainMenu.ShowExpandCollapse = true;
            tvMainMenu.ShowLines = true;
            tvMainMenu.ExpandAll();
            tvMainMenu.DataBind();
        }

        private void CargarTreeviewPermisos()
        {
            string fecha = "";
            string mes, dia;
            if (DateTime.Now.Month < 10)
                mes = "0" + DateTime.Now.Month.ToString();
            else
                mes = DateTime.Now.Month.ToString();
            if (DateTime.Now.Day < 10)
                dia = "0" + DateTime.Now.Day.ToString();
            else
                dia = DateTime.Now.Day.ToString();
            fecha = DateTime.Now.Year.ToString() + mes + dia + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();

            string parametros = "";
            List<AccesoGrupoEN> lst1 = new List<AccesoGrupoEN>(), lst2 = new List<AccesoGrupoEN>(), lst3 = new List<AccesoGrupoEN>();
            IconoAPPCN objIconoAPPCN = new IconoAPPCN();
            GrupxUsuEN obj = new GrupxUsuEN();
            obj = MediadorCN.GetGrupxUsu().Obtener2(Session["Usuario"].ToString());
            IdGrupo = obj.USUGRU_P_inID;
            lst1 = MediadorCN.GetAccesoGrupo().Listar_Modulos_Grupo(IdGrupo, 1);
            TreeNode nodo1, nodo2;
            for (int i = 0; i < lst1.Count; i++)
            {
                if (lst1[i].PERGRU_inACT == 1)
                {
                    nodo1 = new TreeNode();
                    nodo1.Text = lst1[i].OPTGEN_chNOMMEN;
                    nodo1.Value = lst1[i].OPTGEN_P_inID.ToString() + "1";
                    nodo1.ImageUrl = "ghIcono.ashx?ID=" + lst1[i].OPTGEN_P_inID.ToString() + "&tipo=1";
                    tvMainMenu.Nodes.Add(nodo1);
                    lst2 = MediadorCN.GetAccesoGrupo().Listar_Opciones_Grupo(IdGrupo, lst1[i].OPTGEN_P_inID, 1);

                    for (int j = 0; j < lst2.Count; j++)
                    {
                        if (lst2[j].PERGRU_inACT == 1)
                        {
                            if (lst2[j].Tipo == 'I')
                            {
                                //parametros = "?Pass=" + Session["Pass"].ToString() + "&User=" + Session["Usuario"].ToString() + "&fec=" + fecha + "&Time=20" + "&idCtrl=" + lst2[j].SUBOPT_P_inID.ToString() + "&Muni=" + Session["muni"] + "&UsuLog=" + Session["UsuLog"].ToString();
                                parametros = "?idCtrl=" + MediadorCN.GetUsuario().Encripta(Session["Usuario"].ToString()) + lst2[j].SUBOPT_P_inID.ToString() + lst2[j].SUBOPT_P_inID.ToString().Length.ToString();
                                nodo2 = new TreeNode();
                                nodo2.Text = lst2[j].SUBOPT_chNOMSOP;
                                nodo2.Value = lst2[j].SUBOPT_P_inID.ToString() + "2";
                                nodo2.NavigateUrl = "frmMediador.aspx" + parametros;
                                nodo2.Target = "_blank";
                                /*
                                if(tvMainMenu.Nodes.Count<5)
                                    nodo2.NavigateUrl = "#Inicio";
                                else
                                    nodo2.NavigateUrl = "#Final";*/
                                tvMainMenu.Nodes[tvMainMenu.Nodes.Count - 1].ChildNodes.Add(nodo2);
                                nodo2.ImageUrl = "ghIcono.ashx?ID=" + lst2[j].SUBOPT_P_inID.ToString() + "&tipo=2";
                            }
                            else
                            {
                                //parametros = "?Pass=" + Session["Pass"].ToString() + "&User=" + Session["Usuario"].ToString() + "&fec=" + fecha + "&Time=20" + "&idCtrl=" + lst2[j].SUBOPT_P_inID.ToString() + "&Muni=" + Session["muni"] + "&UsuLog=" + Session["UsuLog"].ToString() + "&Tip=1";
                                //Session.Add("pagina", lst2[j].SUBOPT_chDIRURL + parametros);
                                parametros = "?idCtrl=" + MediadorCN.GetUsuario().Encripta(Session["Usuario"].ToString()) + lst2[j].SUBOPT_P_inID.ToString() + lst2[j].SUBOPT_P_inID.ToString().Length.ToString() + "&Tip=1";
                                nodo2 = new TreeNode();
                                nodo2.Text = lst2[j].SUBOPT_chNOMSOP;
                                nodo2.Value = lst2[j].SUBOPT_P_inID.ToString() + "3";
                                nodo2.NavigateUrl = "frmNuevaVentana.aspx" + parametros;
                                nodo2.Target = "_blank";
                                /*
                                if (tvMainMenu.Nodes.Count < 5)
                                    nodo2.NavigateUrl = "#Inicio";
                                else
                                    nodo2.NavigateUrl = "#Final";*/
                                tvMainMenu.Nodes[tvMainMenu.Nodes.Count - 1].ChildNodes.Add(nodo2);
                                nodo2.ImageUrl = "ghIcono.ashx?ID=" + lst2[j].SUBOPT_P_inID.ToString() + "&tipo=2";
                            }
                        }
                    }
                }
            }

            lst3 = MediadorCN.GetAccesoGrupo().Listar_Programa_Grupo(IdGrupo);
            nodo1 = new TreeNode();
            nodo1.Text = "Aplicaciones externas";
            nodo1.Value = "00";
            tvExternos.Nodes.Add(nodo1);
            nodo1 = new TreeNode();
            nodo1.Text = "Aplicaciones externas";
            nodo1.Value = "00";
            tvAux.Nodes.Add(nodo1);
            for (int i = 0; i < lst3.Count; i++)
            {
                if (lst3[i].PERGRU_inACT == 1 && lst3[i].ProInter != 2)
                {
                    nodo2 = new TreeNode();
                    nodo2.Text = lst3[i].PROMUN_chNOMPRO;
                    //nodo2.Text = "http://" + "servicios.munijesusmaria.gob.pe/appweb/wconsulta/consulta.aspx";                
                    nodo2.Value = lst3[i].PROMUN_inID.ToString();
                    //parametros = "?Pass=" + Session["Pass"].ToString() + "&User=" + Session["Usuario"].ToString() + "&fec=" + fecha + "&Time=20" + "&idCtrl=" + lst3[i].PROMUN_inID.ToString() + "&Muni=" + Session["muni"] + "&UsuLog=" + Session["UsuLog"].ToString()+"&Tip=2";
                    parametros = "?idCtrl=" + MediadorCN.GetUsuario().Encripta(Session["Usuario"].ToString()) + lst3[i].PROMUN_inID.ToString() + lst3[i].PROMUN_inID.ToString().Length.ToString() + "&Tip=2";
                    nodo2.NavigateUrl = "frmNuevaVentana.aspx" + parametros;
                    nodo2.Target = "_blank";
                    nodo2.ImageUrl = "ghIcono.ashx?ID=" + lst3[i].PROMUN_inID.ToString() + "&tipo=0";
                    tvExternos.Nodes[0].ChildNodes.Add(nodo2);
                    nodo2 = new TreeNode();
                    nodo2.Text = lst3[i].PROMUN_chNOMPRO;
                    //nodo2.Text = "http://" + "servicios.munijesusmaria.gob.pe/appweb/wconsulta/consulta.aspx";                
                    nodo2.Value = lst3[i].PROMUN_inID.ToString();
                    nodo2.ImageUrl = "ghIcono.ashx?ID=" + lst3[i].PROMUN_inID.ToString() + "&tipo=0";
                    tvAux.Nodes[0].ChildNodes.Add(nodo2);
                }
                // Session.Add(.ToString(), );
            }
            if (tvExternos.Nodes[0].ChildNodes.Count == 0)
                tvExternos.Visible = false;

            tvMainMenu.ShowExpandCollapse = true;
            tvMainMenu.ShowLines = true;
            tvMainMenu.ExpandAll();
            tvMainMenu.DataBind();
            tvExternos.ShowExpandCollapse = true;
            tvExternos.ShowLines = true;
            tvExternos.ExpandAll();
            tvExternos.DataBind();
        }

        private int CalcularEdad(String FechaNacimiento)
        {
            int anio = Convert.ToInt32(FechaNacimiento.Substring(0, 4));
            int edad = DateTime.Now.Year - anio;
            int mes = Convert.ToInt32(FechaNacimiento.Substring(4, 2));
            int dia = Convert.ToInt32(FechaNacimiento.Substring(6, 2));

            if (mes == DateTime.Now.Month)
                if (dia > DateTime.Now.Day)
                    edad--;
            if (mes > DateTime.Now.Month)
                edad--;
            return edad;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            lblFecha.Text = ObtieneFecha();
            Response.AddHeader("Refresh", Convert.ToString((Session.Timeout * 60) + 5));

            if (Session["UsuLog"] == null)
                Response.Redirect("Login.aspx");

            if (!Page.IsPostBack)
            {
                try
                {
                    int tipo = Convert.ToInt32(Session["muni"]);
                    string ID = Session["UsuLog"].ToString();
                    if (tipo != 1)
                    {
                        objPersonaEN = MediadorCN.GetPersona().ObtenerPersona(ID);
                        lblNombreUsuario.Text = objPersonaEN.NombreCompleto;
                        lblUsuario.Text = Session["Usuario"].ToString();
                        Usuario = Session["Usuario"].ToString();
                        lblEmail.Text = objPersonaEN.Email;
                        if (objPersonaEN.Sexo.ToString().ToUpper() == "M" || objPersonaEN.Sexo.ToString().ToUpper() == "")
                            imgFoto.ImageUrl = @"Imagenes/user-male.png";
                        else if (objPersonaEN.Sexo.ToString().ToUpper() == "F")
                            imgFoto.ImageUrl = @"Imagenes/user-female.png";
                        referencia.HRef = imgFoto.ImageUrl;
                    }
                    else
                    {
                        objPersonaEN = MediadorCN.GetPersona().ObtenerPerTramite(ID);
                        int id = MediadorCN.GetPersonaTramite().ObtenerArea(Session["Usuario"].ToString());
                        lblNombreUsuario.Text = objPersonaEN.NombreCompleto;
                        lblUsuario.Text = Session["Usuario"].ToString();
                        lblEmail.Text = objPersonaEN.Email;
                        lblDNI.Text = objPersonaEN.NroDocumento;
                        if (objPersonaEN.Tienefoto.ToUpper() == "SI")
                        {
                            imgFoto.ImageUrl = "ghFotoEmp.ashx?ID=" + objPersonaEN.IDPersona;
                            referencia.HRef = imgFoto.ImageUrl;
                        }
                        else
                        {
                            if (objPersonaEN.Sexo.ToString().ToUpper() == "M" || objPersonaEN.Sexo.ToString().ToUpper() == "")
                                imgFoto.ImageUrl = @"Imagenes/user-male.png";
                            else if (objPersonaEN.Sexo.ToString().ToUpper() == "F")
                                imgFoto.ImageUrl = @"Imagenes/user-female.png";
                            referencia.HRef = imgFoto.ImageUrl;
                        }
                    }
                    CargarTreeviewPermisos();
                }
                catch (Exception ex)
                {
                    Session.Abandon();
                    CierraVentana();
                }
            }
            else
                if (tvMainMenu.SelectedNode != null)
                {
                    CargaSeleccionMain();
                }
        }

        protected void btnCerrarSesion_Click(object sender, EventArgs e)
        {
            InsertarLog("Página principal", "Cerrar sesión", "", 1, "");
            Session.Abandon();
            Response.Redirect("Login.aspx");
        }

        protected void tvMainMenu_SelectedNodeChanged2(object sender, EventArgs e)
        {
            CargaSeleccionMain();
        }

        protected void tvExternos_SelectedNodeChanged(object sender, EventArgs e)
        {
            int value = Convert.ToInt32(tvExternos.SelectedValue);
            if (value != 0)
            {
                int idres = MediadorCN.GetRestriccionMod().IdResExterno(value);
                if (MediadorCN.GetRestriccionGrupo().Acceso(idres, IdGrupo, ObtieneIP()))
                {
                    string parametros = "";
                    ProgramaEN obj = MediadorCN.GetPrograma().Obtener(value);
                    List<ParametroCuentEN> lst = new List<ParametroCuentEN>();
                    RemotePost objRemotePost = new RemotePost();
                    objRemotePost.Url = obj.Enlace;
                    if (obj.EnvParametro == 1)
                    {
                        lst = MediadorCN.GetParametroCuent().Listar(value);
                        if (lst.Count > 0)
                        {
                            if (lst[0].PARURL_P_inID == 1)
                            {
                                parametros = "?" + lst[0].NombreParam + "=" + Session["Usuario"].ToString();
                                objRemotePost.Add(lst[0].NombreParam, Session["Usuario"].ToString());
                            }
                            if (lst.Count > 1)
                            {
                                if (lst[1].PARURL_P_inID == 2)
                                {
                                    parametros = parametros + "&" + lst[1].NombreParam + "=" + Session["Pass"].ToString();
                                    objRemotePost.Add(lst[1].NombreParam, Session["Pass"].ToString());
                                }
                            }
                            string fecha = "";
                            string mes, dia;
                            if (DateTime.Now.Month < 10)
                                mes = "0" + DateTime.Now.Month.ToString();
                            else
                                mes = DateTime.Now.Month.ToString();
                            if (DateTime.Now.Day < 10)
                                dia = "0" + DateTime.Now.Day.ToString();
                            else
                                dia = DateTime.Now.Day.ToString();
                            fecha = DateTime.Now.Year.ToString() + mes + dia + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
                            parametros = parametros + "&fec=" + fecha + "&Time=20";
                            objRemotePost.Add("fec", fecha);
                        }
                    }

                    Session.Add("pagina", obj.Enlace + parametros);
                    AbreVentanaForm("frmNuevaVentana.aspx");
                    InsertarLog(tvExternos.SelectedNode.Text, "Ingresar", "", 1, "");
                    TreeNode nodoextra = new TreeNode();
                    nodoextra.Text = tvAux.Nodes[0].Text;
                    nodoextra.Value = tvAux.Nodes[0].Value;
                    TreeNode hijo;
                    for (int i = 0; i < tvAux.Nodes[0].ChildNodes.Count; i++)
                    {
                        hijo = new TreeNode();
                        hijo.Text = tvAux.Nodes[0].ChildNodes[i].Text;
                        hijo.Value = tvAux.Nodes[0].ChildNodes[i].Value;
                        hijo.ImageUrl = tvAux.Nodes[0].ChildNodes[i].ImageUrl;
                        nodoextra.ChildNodes.Add(hijo);
                    }
                    tvExternos.Nodes.Clear();
                    tvExternos.Nodes.Add(nodoextra);
                    tvExternos.DataBind();
                }
            }
        }
    }
}
